Skip to content

安裝 GitLab Runner

  1. 建立存放 Runner 的資料夾(如: C:\GitLab-Runner
  2. 官方下載頁 依 CPU 架構下載對應的執行檔(x86 64-bit / ARM 64-bit / x86 32-bit),放進上一步建立的資料夾,並更名為 gitlab-runner.exe
  3. 限制該資料夾與執行檔的 Write 權限,只保留系統管理員可寫入(非必要)
  4. 系統管理員身分 開啟 PowerShell,後續指令都在此視窗執行

在 GitLab 上建立 Runner

到專案的 Settings > CI/CD > Runners > Create project runner 建立並取得註冊用的 token

  • Tags:填入此 Runner 負責的工作標籤(如: mr-pipeline);.gitlab-ci.yml 內 job 的 tags 必須對應到這裡才會被此 Runner 取用
  • Run untagged jobs:代表只接沒有標籤以外、有指定標籤的 job
  • Lock to current projects:限制此 Runner 只服務目前指定的專案
  • Maximum job timeout:單一 job 的最長執行時間(秒),最小值 600

註冊 Runner

把上一步取得的指令貼到系統管理員視窗執行:

powershell
.\gitlab-runner.exe register --url https://gitlab.com --token glrt-xxxxxxxxxxxxxxxx

過程中會依序詢問:

  1. GitLab instance URL:直接按 Enter 沿用指令中帶入的網址
  2. Name for the runner:本機 config.toml 內顯示的名稱
  3. Executor:選擇 shell(直接在這台 Windows 主機上以 PowerShell 執行 job)

看到 Runner registered successfully. 即註冊完成,設定會寫入 config.toml

安裝並啟動 Windows 服務

以 Built-in System Account 執行(預設):

powershell
.\gitlab-runner.exe install
.\gitlab-runner.exe start

若要以指定的使用者帳號執行(該帳號需有密碼):

powershell
.\gitlab-runner.exe install --user ENTER-YOUR-USERNAME --password ENTER-YOUR-PASSWORD
.\gitlab-runner.exe start

status 確認服務狀態,出現 gitlab-runner: Service is running 表示已正常運作

powershell
.\gitlab-runner.exe status

回到 GitLab 專案的 Settings > CI/CD > Runners,該 Runner 的狀態應顯示為綠色的 online

其他設定

同時執行多個 job

若要讓同一台 Runner 同時執行多個 job,可修改 config.toml 內的 concurrent 值:

toml
concurrent = 2

將系統地區設定改為 UTF-8

Windows 的非 Unicode 程式預設使用 Big5(950)編碼,job log 中的中文容易出現亂碼。建議把 VM 的系統地區設定改為 UTF-8

設定 > 時間與語言 > 地區 > 其他日期、時間及區域設定 > 地區 > 系統管理 > 變更系統地區設定,勾選 Beta: 使用 Unicode UTF-8 提供全球語言支援,按下確定後重新開機。

問題排解

"pwsh": executable file not found in %PATH%

GitLab Runner 17 之後,shell executor 預設使用 PowerShell Core(pwsh)。若 VM 只安裝 Windows 內建的 Windows PowerShell 5.1,job 一開始準備環境就會失敗:

Preparing the "shell" executor
Using Shell (pwsh) executor...
Preparing environment
ERROR: Job failed (system failure): prepare environment: failed to start process: starting OS command: exec: "pwsh": executable file not found in %PATH%. Check https://docs.gitlab.com/runner/shells/#shell-profile-loading for more information

解法有兩種:安裝 PowerShell Core,或直接把 config.toml 內該 Runner 的 shellpwsh 改為 powershell(改用 Windows PowerShell 5.1)

改完後重啟服務讓設定生效:

powershell
.\gitlab-runner.exe restart

以 VitePress 建置,內容以 CC BY-NC-SA 4.0 釋出。